﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EjercicioIII
{
    class Program
    {
        static void Main(string[] args)
        {
            string nombre_rob;
            int tamano;
            int pos_ini_fila;
            int pos_ini_colu;
            int movimiento;

            Console.WriteLine("Teclee el tamaño de la rejilla");
            tamano = Convert.ToInt32(Console.ReadLine()); //FALTA MANEJAR EXCEPCION EN CASO DE NO INGRESAR NADA PARA HACERLA POR DEFECTO///////////
            //VALIDACION DEL TAMAÑO MINIMO DE LA GRILLA         
            while ((tamano <0) || (tamano>23)){
               Console.WriteLine("el tamaño de la grilla debe ser 0 para iniciar con parametros por defecto o mayor a 1");
               tamano = Convert.ToInt32(Console.ReadLine()); //FALTA MANEJAR EXCEPCION EN CASO DE NO INGRESAR NADA PARA HACERLA POR DEFECTO///////
            }
            if(tamano > 0){
                Console.WriteLine("Teclee el nombre del robot");
                nombre_rob = System.Console.ReadLine(); //FALTA MANEJAR EXCEPCION EN CASO DE NO INGRESAR NADA PARA HACERLA POR DEFECTO////////////
                Console.WriteLine("Indique la celda en la que quiere situar el robot:");
                Console.WriteLine("Fila?");
                pos_ini_fila = Convert.ToInt32(Console.ReadLine());
               //while para validacion de pos inicial menor o igual a tamano de grilla
                while ((pos_ini_fila > tamano) || (pos_ini_fila<=0)){
                    System.Console.WriteLine("Fila inical invalida, debe ser entre 1 y {0}", tamano);
                    pos_ini_fila = Convert.ToInt32(Console.ReadLine());
                }
                Console.WriteLine("Columna?");
                pos_ini_colu = Convert.ToInt32(Console.ReadLine());
               //while para validacion de pos inicial menor o igual a tamano de grilla
                while ((pos_ini_colu > tamano) || (pos_ini_colu<=0)){
                    System.Console.WriteLine("Columna inical invalida, debe ser entre 1 y {0}", tamano);
                    pos_ini_colu = Convert.ToInt32(Console.ReadLine());
                }
            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            //CHEQUEAR QUE SI EL MATRI1.IMRIMIR ESTA FUERA DEL IF TIRRA ERROR, COMO SI LEYERA LA INSTRUCCION ANTES DE CREAR MATRI1////////////////
            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                Rejilla matri1 = new Rejilla(tamano);
                Robot r1 = new Robot(pos_ini_fila - 1,pos_ini_colu - 1, nombre_rob);
                matri1.actualizaCelda(r1, 5);
                do
                {
                    do
                    {
                        Console.Clear();
                        matri1.imprimir();
                        Console.WriteLine("¿Hacia adonde desea mover el robot {0}?", r1.Nombre);
                        Console.WriteLine("(1.-Arriba, 2.- Abajo, 3.- Derecha, 4.- Izquierda, 0.-Salir)");
                        movimiento = Convert.ToInt32(Console.ReadLine());
                        matri1.actualizaCelda(r1, movimiento);
                    } while ((movimiento < 0) || (movimiento > 4));
                } while (movimiento != 0);
            }
            else
            {
                Rejilla matri1 = new Rejilla();
                Robot r1 = new Robot();
                matri1.actualizaCelda(r1,1);
                matri1.imprimir();
            }
                
        //////////////////////////////////////////////////////////////////////////
        
        
        
        
        }
    }
}
